<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>闭包的嵌套和函数的连续调用</title>
</head>

<body>
  <script>

    // 闭包的嵌套
    function test1() {
      var a = 1;
      var b = 2;
      return function test2() {
        var c = 3;
        console.log("a+b=", a + b);

        return function test3() {
          var d = 4;
          console.log("a+b+c+d=", a + b + c + d);
        }
      }
    }
    // 函数的连续调用
    // console.log(test1());
    // let fn2 = test1();
    // let fn3 = fn2()
    // fn3()

    // 当你需要依次执行每一个函数时，当第一次调用函数返回一个新函数时，可以直接再后面加()，表示立即执行返回的函数。
    // test1()()  // 执行test2   a+b= 3
    test1()()()  //执行test2 ：a+b= 3  执行test3： a+b+c+d= 10
  </script>
</body>

</html>